package top.frsf.autocodegen.service;

import com.baomidou.mybatisplus.extension.service.IService;
import top.frsf.autocodegen.controller.dto.AutoTableExportDTO;
import top.frsf.autocodegen.entity.AutoTable;

import java.sql.Connection;
import java.sql.SQLException;

/**
 * 代码生成表(AutoTable)表服务接口
 *
 * @author FRSF
 * @since 2024-07-29 15:36:26
 */
public interface IAutoTableService extends IService<AutoTable> {

    /**
     * 导出数据表
     *
     * @param dto 导出元数据
     */
    void export(AutoTableExportDTO dto) throws SQLException, ClassNotFoundException;

    /**
     * 生成数据表字段
     *
     * @param dto 元数据
     * @param connection 数据库连接
     * @param genTableId 生成的数据表ID
     * @throws SQLException SQL异常
     */
    void genField(AutoTableExportDTO dto, Connection connection,Integer genTableId) throws SQLException;

    /**
     * 生成数据表
     *
     * @param dto 元数据
     * @param connection 数据库连接
     * @return Integer 生成的数据表ID
     * @throws SQLException SQL异常
     */
    Integer genTable(AutoTableExportDTO dto, Connection connection) throws SQLException;

    /**
     * 删除生成的数据表及其关联字段数据
     *
     * @param id 数据表ID
     */
    void deleteTableAndField(Integer id);
}

